package org.tools.encrypt;

import java.io.UnsupportedEncodingException;

import org.tools.constants.StringPool;

/** 
 * Base64类。 <br>
 * 功能：字符串的BASE64编码解码
 *
 * <pre> 
 * 构建组：e-tools
 * 作者：eddy
 * 邮箱：1546077710@qq.com
 * 日期：2017年4月23日-下午6:30:22
 * 版权：E源时代
 * </pre>
 */
public class Base64 {
	
	/**
	 * 将字符串转化为base64编码
	 * 
	 * @param s
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String encodeBase64(String s)
			throws UnsupportedEncodingException {
		return encodeBase64(s,StringPool.UTF_8);
	}

	/**
	 * 将字符串转化为指定的编码base64编码
	 * 
	 * @param s
	 * @param charsetName
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String encodeBase64(String s, String charsetName)
			throws UnsupportedEncodingException {
		byte[] bytes = org.apache.commons.codec.binary.Base64.encodeBase64(s
				.getBytes(charsetName));
		return new String(bytes, charsetName);
	}

	/**
	 * 将 BASE64 编码的字符串 s 进行解码
	 * 
	 * @param s
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String decodeBase64(String s)
			throws UnsupportedEncodingException {
		return decodeBase64(StringPool.UTF_8);
	}

	/**
	 * 将 BASE64 编码的字符串 s 进行解码
	 * 
	 * @param s
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String decodeBase64(String s, String charsetName)
			throws UnsupportedEncodingException {
		byte[] convertBytes = org.apache.commons.codec.binary.Base64
				.decodeBase64(s.getBytes(charsetName));
		return new String(convertBytes, charsetName);
	}

}
